package de.medizin.uni.halle.irm;

import android.app.AlertDialog;
import android.content.ContentValues;
import android.content.Context;
import android.content.DialogInterface;
import android.content.pm.ActivityInfo;
import android.content.res.Configuration;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.os.StrictMode;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.text.InputType;
import android.widget.EditText;
import android.widget.Toast;

import com.actionbarsherlock.app.ActionBar;
import com.actionbarsherlock.app.ActionBar.Tab;
import com.actionbarsherlock.app.SherlockFragmentActivity;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuInflater;
import com.actionbarsherlock.view.MenuItem;

public class BornActivity extends SherlockFragmentActivity implements ActionBar.TabListener {
    /** Called when the activity is first created. */
    private static int position = 0;
    private Fragment mFragment;
    private DatabaseHelper dbhelper;
    SQLiteDatabase db;
    private ActionBar actionbar;
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
    	
//		int layout = getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK;
//		if (layout == Configuration.SCREENLAYOUT_SIZE_XLARGE || layout == Configuration.SCREENLAYOUT_SIZE_LARGE) {
//			setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
//		} else {
//			setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
//		}
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
        StrictMode.setThreadPolicy(policy);
    	dbhelper = new DatabaseHelper(getApplicationContext());
    	db = dbhelper.getWritableDatabase();
    	
    	createSettings(this);
    	
       	actionbar = getSupportActionBar();
        actionbar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM | ActionBar.DISPLAY_USE_LOGO);
        actionbar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
        actionbar.setDisplayShowHomeEnabled(true);

        actionbar.addTab(actionbar.newTab().setText(R.string.overview).setTabListener(this));
        actionbar.addTab(actionbar.newTab().setText(R.string.patients).setTabListener(this));
        actionbar.addTab(actionbar.newTab().setText(R.string.history).setTabListener(this)); 
        actionbar.addTab(actionbar.newTab().setText(R.string.emails).setTabListener(this));
        actionbar.addTab(actionbar.newTab().setText(R.string.sms).setTabListener(this));
        actionbar.addTab(actionbar.newTab().setText(R.string.calls).setTabListener(this));
        actionbar.addTab(actionbar.newTab().setText(R.string.letter).setTabListener(this)); 

    }
    
    private void createSettings(BornActivity bornActivity) {
    	SQLiteDatabase database = openOrCreateDatabase("born", Context.MODE_PRIVATE, null);
    	ContentValues settings = new ContentValues();
    	settings.put("setting", "smstext");
    	settings.put("parameter", "Liebe(r) Teilnehmer(in) der boRN-Studie! Nach der erlebnisreichen Reha hat der Alltag Sie nun wieder. Wie ist es Ihnen in dieser Zeit bisher ergangen?\r\n\r\n" + 
                 "Bitte beantworten Sie dazu die folgenden 2 Fragen mit den entsprechenden Kürzeln, die am besten auf Sie zutreffen (z.B. 'A2 B4' oder 'A3 B0').\r\n\r\n" + 
                 "Wie ging es Ihnen in den letzten 7 Tagen gesundheitlich? A1: sehr gut, A2: gut, A3: mittelmäßig, A4: schlecht, A5: sehr schlecht\r\n\r\n" + 
                 "An wie vielen Tagen waren Sie in der letzten Woche sportlich aktiv (mind. 30 min)? Antwort: B0 für 0 Tage, B1 für 1 Tag bis B7 für 7 Tage in der letzten Woche\r\n\r\n"+
                 "Bei Beratungsbedarf rufen Sie bitte Ihre Ansprechpartnerin in der Klinik an. Wir wünschen weiterhin viel Erfolg bei Ihren Bewegungsaktivitäten! Ihr Reha-Team");
    	database.replace("settings", null, settings);
    	settings.clear();
    	settings.put("setting", "mailtext");
    	settings.put("parameter", "Liebe(r) Teilnehmer(in) der boRN-Studie!\r\n"+
    			"Nach der erlebnisreichen Reha hat der Alltag Sie nun wieder.\r\n"+
    			"Wie ist es Ihnen in dieser Zeit bisher ergangen?\r\n\r\n" + 
                "Bitte beantworten Sie dazu die folgenden 2 Fragen mit den \r\n"+ 
    			"entsprechenden Kuerzeln, die am besten auf Sie zutreffen \r\n"+
                "(z.B. 'A2 B4' oder 'A3 B0').\r\n\r\n" + 
                "Wie ging es Ihnen in den letzten 7 Tagen gesundheitlich?\r\n"+ 
    			"A1: sehr gut, A2: gut, A3: mittelmaessig, A4: schlecht, A5: sehr schlecht\r\n\r\n" + 
                "An wie vielen Tagen waren Sie in der letzten Woche \r\n"+
    			"sportlich aktiv (mind. 30 min)?\r\n"+
    			"B0 fuer 0 Tage, B1 fuer 1 Tag bis B7 fuer 7 Tage in der letzten Woche\r\n\r\n"+
                "Bei Beratungsbedarf rufen Sie bitte Ihre Ansprechpartnerin in der Klinik an.\r\n"+
    			"Wir wuenschen weiterhin viel Erfolg bei Ihren Bewegungsaktivitaeten!\r\n\r\n\r\nIhr Reha-Team");
    	database.replace("settings", null, settings);
    	settings.clear();
    	settings.put("setting", "mailsubject");
    	settings.put("parameter", "Impuls");
    	database.replace("settings", null, settings);
    	settings.clear();
    	settings.put("setting", "adminpassword");
    	settings.put("parameter", "test");
    	database.replace("settings", null, settings);
    	settings.clear();
    	settings.put("setting", "emailadress");
    	settings.put("parameter", "dirk.bellstaedt@student.uni-halle.de");
    	database.replace("settings", null, settings);
    	settings.clear();
    	settings.put("setting", "emailusername");
    	settings.put("parameter","aatnv");
    	database.replace("settings", null, settings);
    	settings.clear();
    	settings.put("setting", "emailpassword");
    	settings.put("parameter", "hu6d8v57");
    	database.replace("settings", null, settings);
    	settings.clear();
    	settings.put("setting", "receiveserver");
    	settings.put("parameter", "mail.uni-halle.de");
    	database.replace("settings", null, settings);
    	settings.clear();
    	settings.put("setting", "receiveport");
    	settings.put("parameter", "110");
    	database.replace("settings", null, settings);
    	settings.clear();
    	settings.put("setting", "protocoll");
    	settings.put("parameter","pop3");
    	database.replace("settings", null, settings);
    	settings.clear();
    	settings.put("setting", "sendserver");
    	settings.put("parameter", "smtpauth.uni-halle.de");
    	database.replace("settings", null, settings);
    	settings.clear();
    	settings.put("setting", "sendport");
    	settings.put("parameter", "587");		
    	database.replace("settings", null, settings);
	}

	@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getSupportMenuInflater();
        inflater.inflate(R.menu.menu, menu);
        return true;
    }
    @Override
    public boolean onOptionsItemSelected(final MenuItem item) {
    	
    	final AlertDialog.Builder alert = new AlertDialog.Builder(this);
    	alert.setTitle("Bitte Administrator Passwort eingeben");
    	final Context c = this;
        final EditText input = new EditText(this);
        input.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);
        alert.setView(input);
        alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int whichButton) {            	
            	if(input.getText().toString().equals("test")){
                	dialog.cancel();
                	switch (item.getItemId()) {
                	case R.id.menu_settings:
                		Toast.makeText(c, "Wifi connection.", Toast.LENGTH_LONG).show();
                		FragmentManager fm = getSupportFragmentManager();
                		FragmentTransaction ft = fm.beginTransaction();
                		ft.detach(mFragment);
                		mFragment = new ViewPagerFragment(0, 9);
                		ft.add(R.id.container, mFragment);
                		ft.commit();
                	}            		
            	} 	
            }
        });
        alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
            public void onClick(DialogInterface dialog, int whichButton) { 
              dialog.cancel(); 
            } 
          }); 
        alert.show();
    	return true;
    }


	public static void setPosition(int p){
		position = p;
	}

	public void onTabSelected(Tab arg0,FragmentTransaction arg1) {
		int fragment = arg0.getPosition();
		if(fragment==0)
			mFragment = new OverviewFragment();
		if(fragment==1)
			mFragment = new PatientsFragment();
		if(fragment==2)
			mFragment = new HistoryFragment();
		if(fragment==3)
			mFragment = new ViewPagerFragment(position, fragment);
		if(fragment==4)
			mFragment = new ViewPagerFragment(position, fragment);
		if(fragment==5)			
			mFragment = new ViewPagerFragment(position, fragment);
		if(fragment==6)
			mFragment = new ViewPagerFragment(position, fragment);

		
		arg1.add(R.id.container, mFragment);
	}

	public void onTabReselected(Tab arg0, FragmentTransaction arg1) {
		arg1.detach(mFragment);
		int fragment = arg0.getPosition();
		if(fragment==0)
			mFragment = new OverviewFragment();
		if(fragment==1)
			mFragment = new PatientsFragment();
		if(fragment==2)
			mFragment = new HistoryFragment();
		if(fragment==3)
			mFragment = new ViewPagerFragment(position, fragment);
		if(fragment==4)
			mFragment = new ViewPagerFragment(position, fragment);
		if(fragment==5)
			mFragment = new ViewPagerFragment(position, fragment);
		if(fragment==6)
			mFragment = new ViewPagerFragment(position, fragment);

		arg1.add(R.id.container, mFragment);
	}

	public void onTabUnselected(Tab tab, FragmentTransaction ft) {
		ft.detach(mFragment);
	}
	
	@Override
	public void onDestroy(){
		super.onDestroy();
		dbhelper.close();
	}
}
